{C语言题目}

来源:百度知道 编辑:UC知道 时间:2024/05/08 19:38:28
15、{C语言题目}如果int x,y,z;
x=5;
y=x++;
z=++x;
则x,y,z最终的值分别是:()(选择1项)
A)X=6,Y=6,Z=7 B)X=6,Y=5,Z=5
C)X=7,Y=5,Z=7 D)X=5,Y=6,Z=5
为什么选择是 C 呢?

x=5;
y=x++; -> y = 5; x = 6;
z=++x; -> z = 7; x = 7;
因为x++返回值是++之前的x,++x的返回值是++之后的x。

y=x++ 是先返回x未自加前的值给y 然后x再自己加一

y = 5; x = 6;

y=++x 是x自加了以后 在把自加以后得到的值返回给y。

z = 7; x = 7;

首先x有x++和++x两项,所以x的最终值为7;
对于y,是先把x的值赋给了y,也就是x++,后x加1;
运行完了y=x++后,此时x的值为6,但++x是先加了1再运算,所以z=7.

首先要知道x++与++x的区别。前者的值是x的一个副本,即x原先的值,如x==3,则x++==3。后者返回的是x自加1后的一个副本,即自加以后的值,如x==3,则++x==4。
要注意的是x++与++x执行后都有一个副作用,就是x=x+1
。所以两者执行后x的值都为4。只是x++与++x两者的值不同罢了。

则容易理解:
x=5;y=x++;执行之后y==5,x==6.
z=++x;执行后z==7,x==7.

将代码拆开来
x=5; //x = 5
y=x++; // 相当于:y = x; x = x + 1;结果y = 5,x = 6
z=++x; //相当于:x = x + 1; z = x;结果x = 7,y = 7
注意x++和++x的区别

x++ 一个是后加
++x 一个是先加了

上面的这位已经说的很清楚了